//package com.le.tester.concurrentchallenge.memorymodel16;
//
//import java.util.concurrent.CancellationException;
//import java.util.concurrent.ExecutionException;
//import java.util.concurrent.locks.AbstractQueuedSynchronizer;
//
///**
// * createTime：2025-05-27 10:51
// * description：说明如何借助同步的FutureTask的内部类
// */
//public final class Sync extends AbstractQueuedSynchronizer {
//    private static final int RUNNING = 1, RAN = 2, CANCELLED = 4;
//
//    private V result;
//
//    private Exception exception;
//
//    void innerSet(V v) {
//        while (true) {
//            int state = getState();
//            if (ranOrCancelled(state)) {
//                return;
//            }
//
//            if (compareAndSetState(state, RAN)) {
//                break;
//            }
//            result = v;
//            releaseShared(0);
//            done();
//        }
//    }
//
//    V innerGet() throws InterruptedException, ExecutionException {
//        acquireSharedInterruptibly(0);
//        if (getState() == CANCELLED) {
//            throw new CancellationException();
//        }
//        if (exception != null) {
//            throw new ExecutionException(exception);
//        }
//        return result;
//    }
//}
